package com.zenithmind.disk.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zenithmind.disk.pojo.domain.RecycleBin;
import com.zenithmind.disk.pojo.query.RecycleBinQuery;
import com.zenithmind.disk.pojo.vo.RecycleBinVO;
import com.zenithmind.common.result.PageResult;

import java.util.List;

public interface RecycleBinService extends IService<RecycleBin> {
    /**
     * 列出回收站文件
     * @return 回收站文件列表
     */
    List<RecycleBinVO> listRecycleBin();

    /**
     * 恢复文件
     * @param fileId 文件ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean restoreFile(String fileId, String userId);

    /**
     * 彻底删除文件
     * @param fileId 文件ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean deleteForever(String fileId, String userId);

    /**
     * 清空回收站
     * @return 是否成功
     */
    boolean clearRecycleBin();

    /**
     * 分页查询回收站文件
     * @param recycleBinQuery 回收站查询条件
     * @return 分页查询结果
     */
    PageResult<RecycleBinVO> recycleBinPage(RecycleBinQuery recycleBinQuery);

    /**
     * 批量删除回收站文件-管理员
     * @param ids 回收站记录ID列表
     * @return 是否成功
     */
    boolean deleteBatchRecycleBin(List<String> ids);

    /**
     * 管理员添加或修改回收站记录
     * @param recycleBin 回收站记录
     * @return 回收站记录
     */
    RecycleBinVO addOrUpdateRecycleBinByAdmin(RecycleBin recycleBin);
}
